<?php
App::uses('AppController', 'Controller');
/**
 * Disserleadings Controller
 *
 * @property Disserleading $Disserleading
 * @property PaginatorComponent $Paginator
 */
class DisserleadingsController extends AppController {

/**
 * Components
 *
 * @var array
 */
	public $SideBarItems = array();
	public $SideBarMessage = '';
	public $HMenu = '';
	public $VMenu = '';
	
	// id пользователя  он же id teacher  он же id author
	public $SessionUserData = '';
	
	// массив список id recordtypes соотнесенных с данной моделью
	public $RecordtypeIDS = array(700,800);
	
	public function beforeFilter() {
		AppController::beforeFilter();
	
	
		$this->set('SideBarMessage', $this->SideBarMessage);
		$this->set('HMenu', $this->HMenu);
	
		$this->SessionUserData = $this->Session->read('SessionUserData');
	
	}

/**
 * index method
 *
 * @return void
 */
	public function index() {

	}

/**
 * view method
 *
 * @throws NotFoundException
 * @param string $id
 * @return void
 */
	public function view($id = null) {
		/* *************************************************************************
		*  делаем проверку что этот пользователь автор - владелец этой записи
		*  данный код необходим во всех контроллерах где работа идет
		*  с конкретной запистью
		* *************************************************************************/
		$this->loadModel('Authorlink');
		$author_id = $this->SessionUserData;
		$is_author = false;
		// тип записи в таблице authorlink
		$recordtype_id = '';
		
		// список типов записей для таблицы disserleadings
		// проверить типы записей для каждой таблицы
		$recordtypes = $this->RecordtypeIDS;
		
		// ищем всех возможных авторов
		$authorlinks = $this->Authorlink->find('all', array('conditions' => array('Authorlink.recordtype_id' => $recordtypes, 'Authorlink.recordid' => $id)));
		foreach ($authorlinks as $authorlink):
		// проверка является ли пользователь владельцем данной записи
		if ($authorlink['Authorlink']['author_id'] == $author_id && $authorlink['Authorlink']['is_owner'] == 1) {
			$is_author = true;
			$recordtype_id = $authorlink['Authorlink']['recordtype_id'];
			$this->set('recordtype_id', $recordtype_id);
			break;
		}
		endforeach;
		if (!$is_author) {
			$this->Session->setFlash(__('Вы не являетесь владельцем записи к которой обращаетесь.'));
			return $this->redirect(array('controller' => 'records', 'action' => 'index'));
		}
		/* *************************************************************************
		 * конец проверки на владельца записи
		* *************************************************************************/
		// устанавливаем активный пункт меню в верхем меню
		$this->set('HMenu', 'Record');
				
		if (!$this->Disserleading->exists($id)) {
			throw new NotFoundException(__('Invalid disserleading'));
		}
		$options = array('conditions' => array('Disserleading.' . $this->Disserleading->primaryKey => $id));
		$this->set('disserleading', $this->Disserleading->find('first', $options));
		
		// список типов записей для таблицы disserleadings
		// проверить типы записей для каждой таблицы
		$recordtypes = $this->RecordtypeIDS;
		// ищем всех возможных авторов
		$authorlinks = $this->Authorlink->find('all', array('conditions' => array('Authorlink.recordtype_id' => $recordtypes, 'Authorlink.recordid' => $id)));
		
		//debug ($authorlinks);
		
		// массив для всех существующих авторов
		$authors = array();
		
		//подключаем все таблицы авторов
		$this->loadModel('Teacher');
		$this->loadModel('Extauthor');
		$this->loadModel('Student');
		
		foreach ($authorlinks as $authorlink):
		$author = $authorlink['Author'];
		switch ($author['authortype_id']) {
			// поиск по преподавателям КГМУ
			case 1: $teacher = $this->Teacher->find('first', array('conditions' => array('Teacher.id' => $author['authorid'])));
			//debug ($teacher);
		
			$fio = 'Преподаватель КГМУ '.$teacher['Teacher']['lastname'].' '.$teacher['Teacher']['firstname'].' '.$teacher['Teacher']['surname'];
			if ($authorlink['Authorlink']['is_owner'] == 1) {
				$fio .=' Автор';
			}
			if ($authorlink['Authorlink']['is_owner'] == 0) {
				$fio .=' (Соавтор)';
			}
			if ($authorlink['Authorlink']['active'] == 0) {
				$fio .=' (не подтвердил)';
			}
		
			// для генерации ссылки на удаление связи соавтора с записью
			if ($authorlink['Authorlink']['is_owner'] == 1) {
				$tmpauthor = array('fio' => $fio, 'linkid' => '');
			} else {
				$tmpauthor = array('fio' => $fio, 'linkid' => $authorlink['Authorlink']['id']);
			}
		
			array_push($authors, $tmpauthor);
			break;
			// поиск по студентам КГМУ
			case 2:
				$student_id = $author['authorid'];
				$student = $this->Student->find('first', array('conditions' => array('Student.id' => $student_id), 'recursive' => -1));
				$studentgroup = $this->Student->Studentgroup->find('first', array('conditions' => array('Studentgroup.id' => $student['Student']['studentgroup_id']), 'recursive' => -1));
				$course = $this->Student->Studentgroup->Course->find('first', array('conditions' => array('Course.id' => $studentgroup['Studentgroup']['course_id']), 'recursive' => -1));
				$profession =  $this->Student->Studentgroup->Course->Profession->find('first', array('conditions' => array('Profession.id' => $course['Course']['profession_id']), 'recursive' => -1));
				$fio = 'Студент КГМУ '.$student['Student']['lastname'].' '.$student['Student']['firstname'].' '.$student['Student']['surname'].' ('.$profession['Profession']['name'].' '.$course['Course']['name'].' '.$studentgroup['Studentgroup']['name'].')';
				// для генерации ссылки на удаление связи соавтора с записью
				$tmpauthor = array('fio' => $fio, 'linkid' => $authorlink['Authorlink']['id']);
				array_push($authors, $tmpauthor);
				break;
				// поиск по внешним авторам
			case 3:
				$extauthor_id = $author['authorid'];
				$extauthor = $this->Extauthor->find('first', array('conditions' => array('Extauthor.id' => $author['authorid'])));
				//debug ($extauthor);
				$fio = $extauthor['Extauthortype']['name'].' '. $extauthor['Extauthor']['lastname'].' '.$extauthor['Extauthor']['firstname'].' '.$extauthor['Extauthor']['surname'];
				// для генерации ссылки на удаление связи соавтора с записью
				$tmpauthor = array('fio' => $fio, 'linkid' => $authorlink['Authorlink']['id']);
				array_push($authors, $tmpauthor);
				break;
		}
		endforeach;
		
		$this->set('authors', $authors);		
	}

/**
 * add method
 *
 * @return void
 */
	public function add($recordtype_id = null) {
		// устанавливаем активный пункт меню в верхем меню
		$this->set('HMenu', 'Record');
		// фиксируем тип записи
		$this->set('recordtype_id', $recordtype_id);
		
		if ($this->request->is('post')) {
			$this->Disserleading->create();
			if ($this->Disserleading->save($this->request->data)) {
				$this->Session->setFlash(__('The disserleading has been saved.'));
				/* 			начало стандартного блока		*/
				// изменяется имя модели в зависисомти от контроллера
				$dissertation_id = $this->Disserleading->id;
				// организуем связь автора и запсиси соотвествующего типа
				$this->loadModel('Authorlink');
				$newlink = array('Authorlink' => array('recordtype_id' => $this->data['recordtype_id'],
						'recordid' => $dissertation_id,
						'author_id' => $this->SessionUserData,
						'is_owner' => 1,
						'active' => 1
				));
				$this->Authorlink->create();
				$this->Authorlink->save($newlink);
				return $this->redirect(array('action' => 'view', $dissertation_id));
				/* 			конец стандартного блока		*/
								
			} else {
				$this->Session->setFlash(__('The disserleading could not be saved. Please, try again.'));
			}
		}
		/* 			начало стандартного блока		*/
		$this->loadModel('Recordtype');
		$recordtypes = $this->Recordtype->find('list');
		$this->set(compact('recordtypes'));
		/* 			конец стандартного блока		*/
		
		$dissertypes_ids = '';
		if ($recordtype_id == 700) {
			$dissertypes_ids = 1;
		} else {
			$dissertypes_ids = 2;
		}
		
		$dissertypes = $this->Disserleading->Dissertype->find('list', array('conditions' => array('Dissertype.id' => $dissertypes_ids)));
		$dissertanttypes = $this->Disserleading->Dissertanttype->find('list');
		$recstatuses = $this->Disserleading->Recstatus->find('list');
		$this->set(compact('dissertypes', 'dissertanttypes', 'recstatuses'));
	}

/**
 * edit method
 *
 * @throws NotFoundException
 * @param string $id
 * @return void
 */
	public function edit() {
		$id = $this->request->data['Disserleading']['id'];
		
		if (!$this->Disserleading->exists($id)) {
			throw new NotFoundException(__('Invalid disserleading'));
		}
		if ($this->request->is(array('post', 'put')) && !isset($this->request->data['Disserleading']['doedit'])) {
			if ($this->Disserleading->save($this->request->data)) {
				$this->Session->setFlash(__('The disserleading has been saved.'));
				return $this->redirect(array('action' => 'view', $id));
			} else {
				$this->Session->setFlash(__('The disserleading could not be saved. Please, try again.'));
			}
		} else {
			$options = array('conditions' => array('Disserleading.' . $this->Disserleading->primaryKey => $id));
			$this->request->data = $this->Disserleading->find('first', $options);
		}
		
		// устанавливаем активный пункт меню в верхем меню
		$this->set('HMenu', 'Record');
		
		$dissertanttypes = $this->Disserleading->Dissertanttype->find('list');
		$dissertypes = $this->Disserleading->Dissertype->find('list');
		$recstatuses = $this->Disserleading->Recstatus->find('list');
		$this->set(compact('dissertypes', 'dissertanttypes', 'recstatuses'));
	}

/**
 * delete method
 *
 * @throws NotFoundException
 * @param string $id
 * @return void
 */
	public function delete() {
		$id = $this->request->data['Disserleading']['id'];
		$this->Disserleading->id = $id;
		if (!$this->Disserleading->exists()) {
			throw new NotFoundException(__('Invalid disserleading'));
		}
		$this->request->onlyAllow('post', 'delete');
		if ($this->Disserleading->delete()) {
			$this->Session->setFlash(__('The disserleading has been deleted.'));
			/** начало стандартного блока **/
			$this->loadModel('Authorlink');
			$recordtypes = $this->RecordtypeIDS;
			$this->Authorlink->deleteall(array('Authorlink.recordtype_id' => $recordtypes, 'Authorlink.recordid' => $id));
			/** конец стандартного блока **/			
		} else {
			$this->Session->setFlash(__('The disserleading could not be deleted. Please, try again.'));
		}
		return $this->redirect(array('controller' => 'records', 'action' => 'index'));
	}
	/** *************************************************************************************
	 * 	стандартый action изменения состояния записи ВНИМАНИЕ НА МОДЕЛЬ
	 * *************************************************************************************/
	public function send() {
		$id = $this->request->data['Disserleading']['id'];
		$this->Disserleading->id = $id;
		$this->Disserleading->saveField('recstatus_id', '2');
		$this->Session->setFlash(__('Запись отправлена модератору.'));
		return $this->redirect(array('controller' => 'records', 'action' => 'index'));
	}
	
	/** *************************************************************************************
	 * 	view для соавтора
	 * *************************************************************************************/	
	public function simpleview($id = null) {
		// устанавливаем активный пункт меню в верхем меню
		$this->set('HMenu', 'Record');
		$this->loadModel('Authorlink');
		
		if (!$this->Disserleading->exists($id)) {
			throw new NotFoundException(__('Invalid disserleading'));
		}
		$options = array('conditions' => array('Disserleading.' . $this->Disserleading->primaryKey => $id));
		$this->set('disserleading', $this->Disserleading->find('first', $options));
	
		// список типов записей для таблицы disserleadings
		// проверить типы записей для каждой таблицы
		$recordtypes = $this->RecordtypeIDS;
		// ищем всех возможных авторов
		$authorlinks = $this->Authorlink->find('all', array('conditions' => array('Authorlink.recordtype_id' => $recordtypes, 'Authorlink.recordid' => $id)));
	
		//debug ($authorlinks);
	
		// массив для всех существующих авторов
		$authors = array();
	
		//подключаем все таблицы авторов
		$this->loadModel('Teacher');
		$this->loadModel('Extauthor');
		$this->loadModel('Student');
	
		foreach ($authorlinks as $authorlink):
		$author = $authorlink['Author'];
		switch ($author['authortype_id']) {
			// поиск по преподавателям КГМУ
			case 1: $teacher = $this->Teacher->find('first', array('conditions' => array('Teacher.id' => $author['authorid'])));
			//debug ($teacher);
	
			$fio = 'Преподаватель КГМУ '.$teacher['Teacher']['lastname'].' '.$teacher['Teacher']['firstname'].' '.$teacher['Teacher']['surname'];
			if ($authorlink['Authorlink']['is_owner'] == 1) {
				$fio .=' Автор';
			}
			if ($authorlink['Authorlink']['is_owner'] == 0) {
				$fio .=' (Соавтор)';
			}
			if ($authorlink['Authorlink']['active'] == 0) {
				$fio .=' (не подтвердил)';
			}
			if (($authorlink['Authorlink']['active'] == 1) && ($authorlink['Authorlink']['is_owner'] == 0)) {
				$fio .=' (подтвердил)';
			}	
			// для генерации ссылки на удаление связи соавтора с записью
			if ($authorlink['Authorlink']['is_owner'] == 1) {
				$tmpauthor = array('fio' => $fio, 'linkid' => '');
			} else {
				$tmpauthor = array('fio' => $fio, 'linkid' => $authorlink['Authorlink']['id']);
			}
	
			array_push($authors, $tmpauthor);
			break;
			// поиск по студентам КГМУ
			case 2:
				$student_id = $author['authorid'];
				$student = $this->Student->find('first', array('conditions' => array('Student.id' => $student_id), 'recursive' => -1));
				$studentgroup = $this->Student->Studentgroup->find('first', array('conditions' => array('Studentgroup.id' => $student['Student']['studentgroup_id']), 'recursive' => -1));
				$course = $this->Student->Studentgroup->Course->find('first', array('conditions' => array('Course.id' => $studentgroup['Studentgroup']['course_id']), 'recursive' => -1));
				$profession =  $this->Student->Studentgroup->Course->Profession->find('first', array('conditions' => array('Profession.id' => $course['Course']['profession_id']), 'recursive' => -1));
				$fio = 'Студент КГМУ '.$student['Student']['lastname'].' '.$student['Student']['firstname'].' '.$student['Student']['surname'].' ('.$profession['Profession']['name'].' '.$course['Course']['name'].' '.$studentgroup['Studentgroup']['name'].')';
				// для генерации ссылки на удаление связи соавтора с записью
				$tmpauthor = array('fio' => $fio, 'linkid' => $authorlink['Authorlink']['id']);
				array_push($authors, $tmpauthor);
				break;
				// поиск по внешним авторам
			case 3:
				$extauthor_id = $author['authorid'];
				$extauthor = $this->Extauthor->find('first', array('conditions' => array('Extauthor.id' => $author['authorid'])));
				//debug ($extauthor);
				$fio = $extauthor['Extauthortype']['name'].' '. $extauthor['Extauthor']['lastname'].' '.$extauthor['Extauthor']['firstname'].' '.$extauthor['Extauthor']['surname'];
				// для генерации ссылки на удаление связи соавтора с записью
				$tmpauthor = array('fio' => $fio, 'linkid' => $authorlink['Authorlink']['id']);
				array_push($authors, $tmpauthor);
				break;
		}
		endforeach;
	
		$this->set('authors', $authors);
	}
}
